FB - create procedure

Otázka od: Jan Rizek

24. 9. 2004 16:58

lze vytvorit v RunTime ulozenou proceduru, pomoci IBSQL? Bez pouziti IBScript?
Jde mi o to jestli tam musi byt vsechen tenhleten kod (statement):

SET TERM ^ ;

CREATE PROCEDURE ID_PARTNERI_IN_DOKLADY
AS
declare variable VID_DOKLADY integer;
BEGIN
  /* pokud ID_PARTNERI neexistuje tak tam hodi -1 */
  for
    select ID_DOKLADY from DOKLADY D
      left outer join PARTNERI P on
      P.ID_PARTNERI=D.ID_PARTNERI
      where P.ID_PARTNERI is null into :VID_DOKLADY do
    update doklady set ID_PARTNERI=-1 where ID_DOKLADY=:VID_DOKLADY;
END
^

SET TERM ; ^

GRANT SELECT,UPDATE ON DOKLADY TO PROCEDURE ID_PARTNERI_IN_DOKLADY;

GRANT SELECT ON PARTNERI TO PROCEDURE ID_PARTNERI_IN_DOKLADY;

GRANT EXECUTE ON PROCEDURE ID_PARTNERI_IN_DOKLADY TO SYSDBA;






i s tema TERM - ama


Odpovedá: Petr Zahradnik

25. 9. 2004 15:55

Puvodni zprava ze dne 25.9.2004:

> Sklanim se pred Vasi moudrosti   Ano pomohlo to..

> TO ADMIN: ja musel podekovat.. uz jsem z toho byl strasne zoufaly..

TO JAN RIZEK: Nekdy ti vysvetlim, jak se dekuje primo na e-mail toho,
kdo ti poradil - neni to ani tak slozite, zvladne to kazda frcinka  

Jinak kdybys me vylozene neoslovoval, nic bych proti tomu nemel, kdyz
je tam aspon mimo dekovani take ta informace, ze to pomohlo.

Petr Zahradnik, pocitacovy expert

==========================================================
Petr Zahradnik, Computer Laboratory
Obvodova 740/14, 400 07 Usti nad Labem
telefon: 475 501 627, mobil: 602 409 601, fax: 475 511 338
web: http://www.clexpert.cz, e-mail: clexpert@clexpert.cz
ICQ: 21215917, MSN: clexpert@clexpert.cz
==========================================================



Odpovedá: Milan Tomes

24. 9. 2004 20:33

Set term neni prikaz FB, ale prikaz pro aplikaci, ktera provadi skripty. Do
jednoho IBSQL se muze dat v jeden okamzik pouze jeden prikaz. Pokud
potrebujes udelat sekvenci, tak proved ty prikazy postupne po sobe...

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Jan Rizek
> Sent: Friday, September 24, 2004 5:31 PM
>
> lze vytvorit v RunTime ulozenou proceduru, pomoci IBSQL? Bez
> pouziti IBScript? Jde mi o to jestli tam musi byt vsechen
> tenhleten kod (statement):


Odpovedá: Jan Rizek

25. 9. 2004 12:35

Nasleduji skript uplne v pohode v IBExpertu pustim - procedura se vytvori a
je funkcni.. Ale kdyz zkousim uplne to same udelat v aplikaci, tak mi to
neprojde - hlasi to:

Project Astor.exe raised exception class EIBInterBaseError with message
'Dynamic SQL Error
SQL error code = -104
Token unknown - line 11, char 7
?'.

Skript je to tento:

CREATE PROCEDURE ID_PARTNERI_IN_DOKLADY
AS
declare variable VID_DOKLADY integer;
BEGIN
  /* pokud ID_PARTNERI neexistuje tak tam hodi -1 */
  for
    select ID_DOKLADY from DOKLADY D
      left outer join PARTNERI P on
      P.ID_PARTNERI=D.ID_PARTNERI
      where P.ID_PARTNERI is null
 into :VID_DOKLADY
 do begin
       update doklady set ID_PARTNERI=-1 where ID_DOKLADY=:VID_DOKLADY; end
END


chyba je v radku

into :VID_DOKLADY

Netusite nekdo, co delam spatne?


Odpovedá: Milan Tomes

25. 9. 2004 13:21

V IBSQL si nastav property CheckParams na false.

S pozdravem

Milan Tomes


> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Jan Rizek
> Sent: Saturday, September 25, 2004 1:34 PM
>
> CREATE PROCEDURE ID_PARTNERI_IN_DOKLADY
> AS
> declare variable VID_DOKLADY integer;
> BEGIN
> /* pokud ID_PARTNERI neexistuje tak tam hodi -1 */
> for
> select ID_DOKLADY from DOKLADY D
> left outer join PARTNERI P on
> P.ID_PARTNERI=D.ID_PARTNERI
> where P.ID_PARTNERI is null
> into :VID_DOKLADY
> do begin
> update doklady set ID_PARTNERI=-1 where
> ID_DOKLADY=:VID_DOKLADY; end
> END
>
>
> chyba je v radku
>
> into :VID_DOKLADY
>
> Netusite nekdo, co delam spatne?


Odpovedá: Jan Rizek

25. 9. 2004 15:17

Sklanim se pred Vasi moudrosti   Ano pomohlo to..

  TO ADMIN: ja musel podekovat.. uz jsem z toho byl strasne zoufaly..


> V IBSQL si nastav property CheckParams na false.
>
> S pozdravem
>
> Milan Tomes
>
>